package reflect;

import java.lang.reflect.Method;

public class ReflectDemo6 {
    public static void main(String[] args) throws Exception {
//        Person p = new Person();
//        p.heihei();//编译不通过

        Class cls = Class.forName("reflect.Person");
        Object obj = cls.newInstance();

/*
            Class的方法:
            Method getMethod()
            Method[] getMethods()
            上述两个方法只能用于获取Class所表示的类的公开方法(包含从超类继承的)

            Method getDeclaredMethod()
            Method[] getDeclaredMethods()
            上述两个方法可以获取Class所表示的类中自己定义的方法包含私有的,不包含从超类继承的
         */
//        Method method = cls.getMethod("heihei");
        Method method = cls.getDeclaredMethod("heihei");
        method.setAccessible(true);//强行打开访问权限
        method.invoke(obj);
    }
}
